package mx.ipn.pruebas;

import java.util.ArrayList;

import mx.ipn.persistencia.FabricaDeDAOs;
import mx.ipn.persistencia.dao.*;
import mx.ipn.to.*;

public class PruebaDAOs13 {
	public static void main(String[] args) {

		FabricaDeDAOs fabricaMySQL = FabricaDeDAOs
				.getFabricaDeDAOs(mx.ipn.Constantes.FABRICA_DAOS_MYSQL);
		short resultado;

		// ***********************************************************************************************
		// //
		// ***********************************************************************************************
		// PERCEPCION 
		System.out
				.println("<<<<<<<<<<<<<<<<<<<<<<<<<PERCEPCION>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
		try {

			TipoPercepcionDescuentoTO tipoPDTO = new TipoPercepcionDescuentoTO();
			tipoPDTO.setIdTipoPercepcionDescuento(4);

			PercepcionDAO percepcionDAO = fabricaMySQL.getPercepcionDAO();
			PercepcionTO percepcionTO = new PercepcionTO(0, "devolucion de colecta",
					"por malos manejos", tipoPDTO);

			// insert
			if (percepcionDAO.insertPercepcion(percepcionTO)) {
				percepcionDAO.insertPercepcion(percepcionTO);
				System.out
						.println("+++++++++++++++++++ Insertado correctamente");
			} else
				System.out.println("Falla en la insercion");

			// actualiza
			percepcionTO.setIdPercepcion(1);
			tipoPDTO.setIdTipoPercepcionDescuento(2);
			percepcionTO.setNombre("rembolso");
			percepcionTO.setTipoPercepcionDescuentoTO((tipoPDTO));

			resultado = percepcionDAO.updatePercepcion(percepcionTO);
			if (resultado == 1)
				System.out
						.println(">>>>>>>>>>>>>>>>>>> Actualizado correctamente");
			else if (resultado == 0)
				System.out.println("Falla en la actualizacion");
			else if (resultado == -1)
				System.out.println("Ocurrio una excepcion");

			// Busca
			System.out.println("------------------------- BUSQUEDA POR ID");
			percepcionTO = percepcionDAO.findPercepcionById(1);
			if (percepcionTO != null) {
				System.out.println("Busqueda exitosa");

				System.out.println("PERCEPCION");
				ImprimirTO.Imprime(percepcionTO);
				System.out.println("TIPOPD");
				ImprimirTO.Imprime(percepcionTO.getTipoPercepcionDescuentoTO());

			} else {
				System.out.println("Falla en la seleccion");
			}

			// Busca
			System.out
					.println("------------------------- BUSQUEDA POR NOMBRE TIPOPD");
			percepcionTO = percepcionDAO.findPercepcionByNombreTipoPD(
					"rembolso", 2);
			if (percepcionTO != null) {
				System.out.println("Busqueda exitosa");

				System.out.println("PERCEPCION");
				ImprimirTO.Imprime(percepcionTO);
				System.out.println("TIPOPD");
				ImprimirTO.Imprime(percepcionTO.getTipoPercepcionDescuentoTO());

			} else {
				System.out.println("Falla en la seleccion");
			}

			// busqueda multiple
			System.out.println("**++++++++++++++++++++++ SELECT PERCEPCION +**");
			java.util.Collection<PercepcionTO> listPercepcionTO = percepcionDAO
					.selectPercepcion();
			if (listPercepcionTO != null) {
				for (int i = 0; i < listPercepcionTO.size(); i++) {
					percepcionTO = ((ArrayList<PercepcionTO>) listPercepcionTO)
							.get(i);
					System.out.println("PERCEPCION");
					ImprimirTO.Imprime(percepcionTO);
					System.out.println("TIPOPD");
					ImprimirTO.Imprime(percepcionTO
							.getTipoPercepcionDescuentoTO());
				}
			} else {
				System.out.println("NO HUBO RESULADOS EN LA BUSQUEDA");
			}

			// busqueda multiple
			System.out
					.println("**++++++++++++++++++++++ SELECT PERCEPCION BY NOMBRE+**");
			listPercepcionTO = percepcionDAO
					.selectPercepcionByNombre("devolucion de colecta");
			if (listPercepcionTO != null) {
				for (int i = 0; i < listPercepcionTO.size(); i++) {
					percepcionTO = ((ArrayList<PercepcionTO>) listPercepcionTO)
							.get(i);
					System.out.println("PERCEPCION");
					ImprimirTO.Imprime(percepcionTO);
					System.out.println("TIPOPD");
					ImprimirTO.Imprime(percepcionTO
							.getTipoPercepcionDescuentoTO());
				}
			} else {
				System.out.println("NO HUBO RESULADOS EN LA BUSQUEDA");
			}

			// Busca
			System.out.println("------------------- BUSQUEDA POR TIPOPD");
			percepcionTO = percepcionDAO.selectPercepcionByTipoPD(4);
			if (percepcionTO != null) {
				System.out.println("Busqueda exitosa");

				System.out.println("PERCEPCION");

				for (int x = 0; x < percepcionTO.getListIdPercepcion().length; x++) {
					System.out.println("IDPERCEPCION");
					System.out.println(percepcionTO.getListIdPercepcion()[x]);
				}
				for (int x = 0; x < percepcionTO.getListNombre().length; x++) {
					System.out.println("NOMBRE");
					System.out.println(percepcionTO.getListNombre()[x]);
				}
				for (int x = 0; x < percepcionTO.getListDescripcion().length; x++) {
					System.out.println("DESCRIPCION");
					System.out.println(percepcionTO.getListDescripcion()[x]);
				}

				System.out.println("TIPOPD");
				ImprimirTO.Imprime(percepcionTO.getTipoPercepcionDescuentoTO());

			} else {
				System.out.println("Falla en la seleccion");
			}

		} catch (Exception e) {
			System.out.println("Ocurrio una excepcion");
		}
		
		// ***********************************************************************************************
		// //
		// ***********************************************************************************************
		// COLONIA 
		System.out
				.println("<<<<<<<<<<<<<<<<<<<<<<<<<COLONIA>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
		try {

			MunicipioTO municipioTO = new MunicipioTO();
			municipioTO.setIdMunicipio(4);

			ColoniaDAO coloniaDAO = fabricaMySQL.getColoniaDAO();
			ColoniaTO coloniaTO = new ColoniaTO(0, "independiente",municipioTO,"09090");

			// insert
			if (coloniaDAO.insertColonia(coloniaTO)) {
				coloniaDAO.insertColonia(coloniaTO);
				System.out
						.println("+++++++++++++++++++ Insertado correctamente");
			} else
				System.out.println("Falla en la insercion");

			resultado = coloniaDAO.deleteColonia(17);
			if (resultado == 1)
				System.out
						.println(">>>>>>>>>>>>>>>>>>> Borrado correctamente");
			else if (resultado == 0)
				System.out.println("Falla en el borrado");
			else if (resultado == -1)
				System.out.println("Ocurrio una excepcion");
			
			// actualiza
			coloniaTO.setIdColonia(1);
			municipioTO.setIdMunicipio(2);
			coloniaTO.setNombre("quemado");
			coloniaTO.setMunicipioTO((municipioTO));

			resultado = coloniaDAO.updateColonia(coloniaTO);
			if (resultado == 1)
				System.out
						.println(">>>>>>>>>>>>>>>>>>> Actualizado correctamente");
			else if (resultado == 0)
				System.out.println("Falla en la actualizacion");
			else if (resultado == -1)
				System.out.println("Ocurrio una excepcion");

			// Busca
			System.out.println("------------------------- BUSQUEDA POR ID");
			coloniaTO = coloniaDAO.findColoniaById(1);
			if (coloniaTO != null) {
				System.out.println("Busqueda exitosa");

				System.out.println("COLONIA");
				ImprimirTO.Imprime(coloniaTO);
				System.out.println("MUNICIPIO");
				ImprimirTO.Imprime(coloniaTO.getMunicipioTO());

			} else {
				System.out.println("Falla en la seleccion");
			}

			// Busca
			System.out
					.println("------------------------- BUSQUEDA POR NOMBRE MUNICIPIO");
			coloniaTO = coloniaDAO.findColoniaByNombreMunicipio("quemado", 2);
			if (coloniaTO != null) {
				System.out.println("Busqueda exitosa");

				System.out.println("COLONIA");
				ImprimirTO.Imprime(coloniaTO);
				System.out.println("MUNICIPIO");
				ImprimirTO.Imprime(coloniaTO.getMunicipioTO());

			} else {
				System.out.println("Falla en la seleccion");
			}

			// busqueda multiple
			System.out.println("**++++++++++++++++++++++ SELECT COLONIA +**");
			java.util.Collection<ColoniaTO> listColoniaTO = coloniaDAO
					.selectColonia();
			if (listColoniaTO != null) {
				for (int i = 0; i < listColoniaTO.size(); i++) {
					coloniaTO = ((ArrayList<ColoniaTO>) listColoniaTO)
							.get(i);
					System.out.println("COLONIA");
					ImprimirTO.Imprime(coloniaTO);
					System.out.println("MUNICIPIO");
					ImprimirTO.Imprime(coloniaTO
							.getMunicipioTO());
				}
			} else {
				System.out.println("NO HUBO RESULADOS EN LA BUSQUEDA");
			}

			

			// Busca
			System.out.println("------------------- BUSQUEDA POR MUNICIPIO");
			coloniaTO = coloniaDAO.selectColoniaByMunicipio(3);
			if (coloniaTO != null) {
				System.out.println("Busqueda exitosa");

				System.out.println("COLONIA");

				for (int x = 0; x < coloniaTO.getListIdColonia().length; x++) {
					System.out.println("IDCOLONIA");
					System.out.println(coloniaTO.getListIdColonia()[x]);
				}
				for (int x = 0; x < coloniaTO.getListNombre().length; x++) {
					System.out.println("NOMBRE");
					System.out.println(coloniaTO.getListNombre()[x]);
				}
				for (int x = 0; x < coloniaTO.getListCodigoPostal().length; x++) {
					System.out.println("DESCRIPCION");
					System.out.println(coloniaTO.getListCodigoPostal()[x]);
				}

				System.out.println("MUNICIPIO");
				ImprimirTO.Imprime(coloniaTO.getMunicipioTO());

			} else {
				System.out.println("Falla en la seleccion");
			}

		} catch (Exception e) {
			System.out.println("Ocurrio una excepcion");
		}
		
		// ***********************************************************************************************
		// CALLE
		System.out
				.println("<<<<<<<<<<<<<<<<<<<<<<<<<CALLE>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
		try {

			CalleDAO calleDAO = fabricaMySQL.getCalleDAO();
			CalleTO calleTO = new CalleTO(0, "renegado");

			// insert
			if (calleDAO.insertCalle(calleTO)) {
				calleDAO.insertCalle(calleTO);
				System.out.println("Insertado correctamente");
			} else
				System.out.println("Falla en la insercion");

			// borra
			resultado = calleDAO.deleteCalle(10);
			if (resultado == 1)
				System.out.println("Borrado correctamente");
			else if (resultado == 0)
				System.out.println("Falla en el borrado");
			else if (resultado == -1)
				System.out.println("Ocurrio una excepcion al borrar");

			// actualiza
			calleTO.setIdCalle(2);
			calleTO.setNombre("moribundos");

			resultado = calleDAO.updateCalle(calleTO);
			if (resultado == 1)
				System.out.println("Actualizado correctamente");
			else if (resultado == 0)
				System.out.println("Falla en la actualizacion");
			else if (resultado == -1)
				System.out.println("Ocurrio una excepcion");

			// Busca por id
			calleTO = calleDAO.findCalleById(2);
			if (calleTO != null) {
				System.out.println("Busqueda exitosa");

				System.out.println("CALLE");
				System.out.println("idCalle: "
						+ calleTO.getIdCalle());
				System.out.println("nombre: " + calleTO.getNombre());

			} else {
				System.out.println("Falla en la seleccion");
			}
			
			// Busca 
			System.out.println("--------------------------Busqueda POR NOMBRE");
			calleTO = calleDAO.findCalleByNombre("plateros");
			if (calleTO != null) {
				System.out.println("Busqueda exitosa");

				System.out.println("CALLE");
				System.out.println("idCalle: "
						+ calleTO.getIdCalle());
				System.out.println("nombre: " + calleTO.getNombre());

			} else {
				System.out.println("Falla en la seleccion");
			}

			System.out.println("**+++++++++++++++++++++++++++SELECT CALLE+**");
			ArrayList<CalleTO> listCalleTO = calleDAO
					.selectCalle();
			for (int i = 0; i < listCalleTO.size(); i++) {
				calleTO = listCalleTO.get(i);
				System.out.println("CALLE");
				System.out.println("idCalle: "
						+ calleTO.getIdCalle());
				System.out.println("nombre: " + calleTO.getNombre());
			}

		} catch (Exception e) {
			System.out.println("Ocurrio una excepcion");
		}
	}

}
